#include "Tabuleiro.hpp"
#include <cstring>

using namespace jogodavelharedes;

    Tabuleiro:: Tabuleiro (int numLinhas, int numColunas) {
        this->numLinhas = numLinhas;
        this->numColunas = numColunas;

        tabuleiro = new char*[numLinhas];
        for (int i = 0; i < numLinhas; i++) {

            tabuleiro[i] = new char[numColunas];
            memset(tabuleiro[i], ' ', numColunas);
        }
        this->esvaziaTabuleiro();

    }

    void Tabuleiro:: setPeca (int linha, int coluna, char peca){
        this->tabuleiro[linha][coluna] = peca;

    }

    char Tabuleiro:: getPeca (int linha, int coluna) {
        return this->tabuleiro[linha][coluna];
    
    }

    bool Tabuleiro:: estaLivre(int linha, int coluna) {
        return (this->tabuleiro[linha][coluna] == ' ');

    }

    Tabuleiro:: ~Tabuleiro() {
        for (int i = 0; i < numLinhas; i++) {
            delete tabuleiro[i];
        }
        delete tabuleiro;
    }

    void Tabuleiro:: esvaziaTabuleiro() {
        int i;
        int j;

        for (i = 0; i < this->numLinhas; i++)
            for (j = 0; j < this->numColunas; j++)
                this->tabuleiro[i][j] = ' ';
    
    }

    int Tabuleiro:: getNumeroLinhas() {
        return numLinhas;

    }

    int Tabuleiro:: getNumeroColunas() {
        return numColunas;

    }

    int Tabuleiro:: getCountPosicoesLivres() {
        int i;
        int j;
        int count = 0;

        for (i = 0; i < this->numLinhas; i++ ) {
            for (j = 0; j < this->numColunas; j++) {
                if (this->estaLivre(i, j)) {
                    count++;
                }
            }
        }
        return count;

    }